import tensorflow as tf


def sep(label=''):
    print('-' * 32, label, '-' * 32, sep='')


# 2.	有关Tensorflow的常见的运算；
# ①	手动输入一个二维的数组[[1.,3],[7.,5.],[9.,11.]]（6分）
sep('①	手动输入一个二维的数组[[1.,3],[7.,5.],[9.,11.]]')
x2d = tf.Variable([[1., 3], [7., 5.], [9., 11.]], dtype=tf.float32)
print(x2d)

# ②	将erwei数组转换为一维的向量（6分）
sep('②	将erwei数组转换为一维的向量')
x1d = tf.reshape(x2d, [-1])  # ATTENTION [-1] for vector
print(x1d)

# ③	对①按照要求算出每行和整个数组的平均值（6分）
sep('③	对①按照要求算出每行和整个数组的平均值')
x2d_m_by_rows = tf.reduce_mean(x2d, axis=1)
x2d_m = tf.reduce_mean(x2d)
print(x2d_m_by_rows)
print(x2d_m)

# ④	对①及求第二行最大的值，第一列最小的值。（6分）
sep('④	对①及求第二行最大的值，第一列最小的值。')
x2d_row2_max = tf.reduce_max(x2d[1])
x2d_col1_min = tf.reduce_min(x2d[:, 0])
print(x2d_row2_max)
print(x2d_col1_min)

# ⑤	对数组①进行数字翻倍，且输出结果（6分）
sep('⑤	对数组①进行数字翻倍，且输出结果')
x2d_mul = x2d * 2
print(x2d_mul)

with tf.compat.v1.Session() as sess:
    sess.run(tf.compat.v1.global_variables_initializer())

    # ③	对①按照要求算出每行和整个数组的平均值（6分）
    sep('③	对①按照要求算出每行和整个数组的平均值')
    print(sess.run(x2d_m_by_rows))
    print(sess.run(x2d_m))

    # ④	对①及求第二行最大的值，第一列最小的值。（6分）
    sep('④	对①及求第二行最大的值，第一列最小的值。')
    print(sess.run(x2d_row2_max))
    print(sess.run(x2d_col1_min))

    # ⑤	对数组①进行数字翻倍，且输出结果（6分）
    sep('⑤	对数组①进行数字翻倍，且输出结果')
    print(sess.run(x2d_mul))
